home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / General / WASTE 1.0a4 Distribution / Demo Source / WEDemoIntf.p < prev    next >
Text File  |  1994-03-28  |  4KB  |  184 lines

  1. unit DemoIntf;
  2.  
  3. { WASTE DEMO PROJECT: }
  4. { Global interface: constant, type and class declarations used in most other units }
  5.  
  6. { Copyright © 1993-1994 Merzwaren }
  7. { All Rights Reserved }
  8.  
  9. interface
  10.     uses
  11.         DialogUtils, TextServices, WASTE;
  12.  
  13.     const
  14.  
  15. { WASTE demo signature }
  16.  
  17.         kAppSignature = 'OEDE';
  18.  
  19. { resource types, clipboard types and file types }
  20.  
  21.         kTypeDeskAccessory = 'DRVR';
  22.         kTypeFont = 'FONT';
  23.         kTypeStyleScrap = 'styl';
  24.         kTypeText = 'TEXT';
  25.  
  26. { menu IDs }
  27.  
  28.         kMenuApple = 1;
  29.         kMenuFile = 2;
  30.         kMenuEdit = 3;
  31.         kMenuFont = 4;
  32.         kMenuSize = 5;
  33.         kMenuStyle = 6;
  34.         kMenuAlignment = 7;
  35.  
  36. { Apple menu items }
  37.  
  38.         kItemAbout = 1;
  39.  
  40. { File menu items }
  41.  
  42.         kItemNew = 1;
  43.         kItemOpen = 2;
  44.         kItemClose = 4;
  45.         kItemSaveAs = 5;
  46.         kItemQuit = 7;
  47.  
  48. { Edit menu items }
  49.  
  50.         kItemUndo = 1;
  51.         kItemCut = 3;
  52.         kItemCopy = 4;
  53.         kItemPaste = 5;
  54.         kItemClear = 6;
  55.         kItemSelectAll = 7;
  56.  
  57. { Size menu items }
  58.  
  59.         kItemLastSize = 6;
  60.         kItemSmaller = 8;
  61.         kItemLarger = 9;
  62.  
  63. { Style menu items }
  64.  
  65.         kItemPlainText = 1;
  66.         kItemBold = 2;
  67.         kItemItalic = 3;
  68.         kItemUnderline = 4;
  69.         kItemOutline = 5;
  70.         kItemShadow = 6;
  71.         kItemCondensed = 7;
  72.         kItemExtended = 8;
  73.  
  74. { Alignment menu items }
  75.  
  76.         kItemAlignLeft = 1;
  77.         kItemCenter = 2;
  78.         kItemAlignRight = 3;
  79.         kItemJustify = 4;
  80.  
  81. { Alert template resource IDs }
  82.  
  83.         kAlertNeedSys7 = 128;
  84.         kAlertAboutBox = 129;
  85.         kAlertGenError = 130;
  86.  
  87. { miscellaneous resource IDs }
  88.  
  89.         kMenuBarID = 128;
  90.         kWindowTemplateID = 128;
  91.         kScrollBarTemplateID = 128;
  92.         kPromptStringID = 128;
  93.  
  94. { virtual key codes for navigation keys found on extended keyboards }
  95.  
  96.         keyPgUp = $74;
  97.         keyPgDn = $79;
  98.         keyHome = $73;
  99.         keyEnd = $77;
  100.  
  101. { values for HiliteControl hiliteState parameter }
  102.  
  103.         kCtlActive = 0;                    { active control }
  104.         kCtlHilited = 1;                    { highlighted active control }
  105.         kCtlBackground = 254;        { inactive control in an inactive window }
  106.         kCtlInactive = 255;            { inactive control in the active window }
  107.  
  108. { other commonly used constants }
  109.  
  110.         kBarWidth = 16;                { width of a scroll bar }
  111.         kTitleHeight = 20;                { usual height of a window title bar }
  112.         kTextMargin = 3;                { indent of text rect from window port rect }
  113.         kScrollDelta = 11;                { pixels to scroll when the scroll bar arrow is clicked }
  114.  
  115.     type
  116.  
  117. { a ScrollBarPair is just a pair of control handles }
  118.  
  119.         ScrollBarPair = record
  120.                 case Integer of
  121.                     0: (
  122.                             v, h: ControlHandle;
  123.                     );
  124.                     1: (
  125.                             vh: array[VHSelect] of ControlHandle;
  126.                     );
  127.             end;  { ScrollBarPair }
  128.  
  129. { a DocumentRecord is a window record with additional fields }
  130.  
  131.         DocumentRecord = record
  132.                 window: WindowRecord;                    { the window }
  133.                 scrollBars: ScrollBarPair;                    { its scroll bars }
  134.                 hWE: WEHandle;                                { its WASTE instance }
  135.             end;  { DocumentRec }
  136.         DocumentPeek = ^DocumentRecord;
  137.  
  138.     var
  139.  
  140. { global variables }
  141.  
  142.         gHasColorQD: Boolean;            { TRUE if Color QuickDraw is available }
  143.         gHasTextServices: Boolean;    { TRUE if the Text Services Manager is available }
  144.         gExiting: Boolean;                    { set this variable to drop out of event loop and quit }
  145.  
  146. { general purpose utility routines }
  147.  
  148.     procedure ErrorAlert (err: OSErr);
  149.     function NewHandleTemp (blockSize: Size;
  150.                                     var h: univ Handle): OSErr;
  151.  
  152. implementation
  153.  
  154.     procedure ErrorAlert (err: OSErr);
  155.         var
  156.             errString: Str255;
  157.             alertResult: Integer;
  158.     begin
  159.         NumToString(err, errString);
  160.         ParamText(errString, '', '', '');
  161.         alertResult := Alert(kAlertGenError, @DialogFilter);
  162.     end;  { ErrorAlert }
  163.  
  164.     function NewHandleTemp (blockSize: Size;
  165.                                     var h: univ Handle): OSErr;
  166.  
  167. { allocate a new relocatable block from temporary memory or, }
  168. { if that fails, from the current heap }
  169.  
  170.     begin
  171.  
  172. { first try tapping temporary memory }
  173.         h := TempNewHandle(blockSize, NewHandleTemp);
  174.  
  175. { in case of failure, try with current heap }
  176.         if (h = nil) then
  177.             begin
  178.                 h := NewHandle(blockSize);
  179.                 NewHandleTemp := MemError;
  180.             end;
  181.  
  182.     end;  { NewHandleTemp }
  183.  
  184. end.